#include "keys.h"


int main() {
	pNo_PK obras, sk_titulo, sk_autor, sk_tipo, sk_ano;
	int n=0, tamanho=0, tautor = 0, ttitulo = 0, ttipo = 0, tano=0;
	FILE *base, *avail;
	char tit[tam_titulo+1];
	/* roda a funcao para atualizar os arquivos de acordo com o base25.dat */
	atualiza_arquivos(&obras, &sk_titulo, &sk_autor, &sk_tipo, &sk_ano, &tamanho, &tautor, &ttitulo, &ttipo, &tano);
	while (n != 4) {  /* inicio da interface com o usuario, mantem loop enquanto n diferente de 3 */  
		printf("**********************************************\n**********************************************\n**                                          **\n         1 - Adicionar novo titulo\n         2 - Realizar consultas\n         3 - Remover titulo\n         4 - Sair\n**                                          **\n**********************************************\n**********************************************\n");
		scanf("%d", &n);
		__fpurge(stdin);
		switch(n) {
			case 1:
				if(!(avail = fopen ( "avail_head.dat" , "rb" ))) /* checa se avail_list ja existe, caso nao existe, ele cria com valor -001 */
					cria_avail ();
				base = fopen ("base25.dat", "a");
				insere(tamanho, base, tit, &obras); /* entra na funcao insere do inserir.c */
				tamanho = tautor = ttitulo = ttipo = tano = 0; 
				/* reatualiza todos os arquivos */
				atualiza_arquivos(&obras, &sk_titulo, &sk_autor, &sk_tipo, &sk_ano, &tamanho, &tautor, &ttitulo, &ttipo, &tano);
				break;
			case 2:
				menu_consulta(obras, tamanho, sk_titulo, sk_tipo, sk_autor, sk_ano, ttitulo, ttipo, tautor, tano, tamanho); /* entra na secao de consulta */
				break;
			case 3:
				if(!(avail = fopen ( "avail_head.dat" , "rb" ))) /* checa se avail_list ja existe, caso nao existe, ele cria com valor -001 */
					cria_avail ();
				remocao(obras, tamanho);
				tamanho = tautor = ttitulo = ttipo = tano = 0;
				/* reatualiza todos os arquivos */
				atualiza_arquivos(&obras, &sk_titulo, &sk_autor, &sk_tipo, &sk_ano, &tamanho, &tautor, &ttitulo, &ttipo, &tano);
			case 4:
				break;
			default:
				printf("Opcao invalida\n");
				break;	
		}
	}
	if (base = fopen ("base25.dat", "rb")) {

	/* se a base existe a gravacao dos vetores de obras e sks precisam ser gravados em disco */ 
	
	GravaArray("nrr.dat", tamanho, obras); 
	GravaArray("sk_titulo.dat", ttitulo, sk_titulo);
	GravaArray("sk_tipo.dat", ttipo, sk_tipo);
	GravaArray("sk_autor.dat", tautor, sk_autor);
	GravaArray("sk_ano.dat", tano, sk_ano); 
	}

	/*libera os vetores */

	free(obras); 
	free(sk_titulo);
	free(sk_tipo);
	free(sk_autor);
	free(sk_ano);
	printf("Encerrando programa.\n"); 
	return 0;	
}

